package miravalles.chip;

import java.math.BigDecimal;

import android.app.Activity;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.ImageButton;

class Atajo implements OnClickListener, OnLongClickListener {
	String concepto;
	View boton;
	boolean preguntar = false;
	String nombrePersistente;
	Integer iconoPersonalizado;
	BoteActivity boteActivity;
	BigDecimal   cantidad;
	
	public Atajo(BoteActivity boteActivity, String concepto, Integer id, String nombrePersistente) {
		this.boteActivity=boteActivity;
		this.concepto=concepto;
		boton=boteActivity.findViewById(id);
		boton.setOnClickListener(this);
		boton.setOnLongClickListener(this);
		this.nombrePersistente=nombrePersistente;
		cargarBoton();
	}
	public void setConcepto(String concepto) {
		this.concepto=concepto;
		if(boton instanceof Button) {
			Button b=(Button)boton;
			b.setText(concepto);
		}		
	}
	public void onClick(View v) {
		if(preguntar) {
			boteActivity.dialogoApunte(concepto, "-", boteActivity.getCantidad());
		} else {
			boteActivity.doRestar(concepto, cantidad);
		}
	}
	public Atajo(BoteActivity boteActivity, String concepto, Integer id, boolean preguntar, String nombrePersistente) {
		this.boteActivity=boteActivity;
		this.concepto=concepto;
		boton=boteActivity.findViewById(id);
		this.preguntar=preguntar;
		boton.setOnClickListener(this);
		this.nombrePersistente=nombrePersistente;
		cargarBoton();
	}
	
	
	public boolean onLongClick(View v) {
		final DialogoIconos dialogo=new DialogoIconos(boteActivity);
		dialogo.show();
		dialogo.setConcepto(concepto);
		dialogo.setCantidad(cantidad);
		Button aceptar=(Button)dialogo.findViewById(R.id.aceptar);
		aceptar.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				String concepto=dialogo.getConcepto();
				setConcepto(concepto);
				Integer icono=dialogo.getIcono();
				if(icono!=null) {
					setImagen(icono);
					iconoPersonalizado=icono;
				}
				cantidad=dialogo.getCantidad();
				grabar();
				dialogo.cancel();
			}
		});		
		
		return true;
	}
	
	public void setImagen(Integer icono) {
		if(boton instanceof ImageButton) {
			ImageButton b=(ImageButton)boton;
			b.setImageDrawable(
				boton.getContext().getResources()
					.getDrawable(DialogoIconos.iconos[icono]));			
		} else if(boton instanceof Button) {
			Button b=(Button)boton;
			Drawable img = b.getContext().getResources().getDrawable(
					DialogoIconos.iconos[icono] );
			img.setBounds( 0, 0, 60, 60 );
			b.setCompoundDrawables( img, null, null, null );			
		}
	}
	
	public void cargarBoton() {
		SharedPreferences pref=PreferenceManager.getDefaultSharedPreferences(boton.getContext());
		String conceptoPersistente=pref.getString(nombrePersistente+"_concepto", null);
		if(conceptoPersistente!=null) {
			setConcepto(conceptoPersistente);				
		}
		Integer iconoPersistente=pref.getInt(
				nombrePersistente+"_icono", -1);
		if(iconoPersistente >= 0) {
			setImagen(iconoPersistente);
			iconoPersonalizado=iconoPersistente;
		}
		String stCantidadPersistente=pref.getString(nombrePersistente +"_cantidad", null);
		if(stCantidadPersistente!=null) {
			cantidad=Util.getNumero(stCantidadPersistente);
		} else {
			cantidad=null;
		}
		
	}
	
	public void grabar() {
		SharedPreferences pref=PreferenceManager.getDefaultSharedPreferences(boton.getContext());
    	SharedPreferences.Editor editor=pref.edit();
    	editor.putString(nombrePersistente + "_concepto", concepto);
    	if(iconoPersonalizado!=null) {
    		editor.putInt(
    					nombrePersistente+"_icono",
    					iconoPersonalizado);
    	}
    	if(cantidad!=null) {
    		editor.putString(nombrePersistente+"_cantidad", cantidad.toString());
    	}

    	editor.commit();
	}

};
